#ifndef Camera_H
#define Camera_H


#include "VectorPoint3D.h"
#include <String.h>
//---------------------------------------------------------------------------

enum type_camera_state {
        perspectiva,
        ortogonal,
        oblicua,
        ninguna
};

class Camera {

   private:
        float left, right, bottom, top;
        float cerca, lejos;

        type_camera_state camera_state;

        VectorPoint3D* eye, *look, *up;
        VectorPoint3D* u, *v, *n;

        float angulo;
        float ratio;

        float V[16];

   public:

        ~Camera();
        Camera (VectorPoint3D* eye, VectorPoint3D* look, VectorPoint3D *up);
        void setView(VectorPoint3D * eye, VectorPoint3D* look, VectorPoint3D* up);
        void resetView();

        void setModelViewMatrix();

        void setCameraState(type_camera_state);
        type_camera_state getCameraState();


        void roll(float valor);
        void yaw(float valor);
        void pitch(float valor);

        void desplazar(float distancia, int eje);
        void ortogonal();
        void perspectiva();
        void oblicua(VectorPoint3D* d);
        void setLimites(float left, float right, float bottom, float top, float cerca, float lejos);


};

#endif